import type { InsureTypeCnEnum, IsSetUserDetailConfigTypeCnEnum } from '@/const/enum'

export interface ConfigListDto {
    /**
     * 0-不配置,1-配置
     */
    coInsureType: string
    /**
     * 创建时间
     */
    createTime: string
    /**
     * 创建人id
     */
    createUserId: string
    /**
     * 创建人
     */
    createUserName: string
    /**
     * 发送邮件配置-通过
     */
    emailConfig: string
    /**
     * 通过post配置-通过
     */
    httpConfig: string
    id: number
    /**
     * 保险公司名字
     */
    insureCompanyName: string
    /**
     * 保险产品（1:日结保  2:长期保  3:团意险保）
     */
    insureType: string
    /**
     * 是否删除
     */
    isDelete: string
    /**
     * 规则名称
     */
    ruleName: string
    /**
     * 更新时间
     */
    updateTime: string
    /**
     * 更新人id
     */
    updateUserId: string
}


export interface AddCommunicationConfigReqDto {
    ruleName: string
    insuranceType: InsureTypeCnEnum
    emailConfigs: EmailConfigListDto[]
    coInsureType: IsSetUserDetailConfigTypeCnEnum
    httpConfigs: HttpConfigDto[]
    coInsureTime: string
    coInsureEmail: string
}

export interface EditCommunicationConfigReqDto extends AddCommunicationConfigReqDto {
    id: number
}

export interface EmailConfigListDto {
    fileTemplate: string // 多个用隔开
    emailTitleTemplate: string
    emailTextTemplate: string
    emailTo: string  // 多个用隔开
}

export interface HttpConfigDto {
    respConfig: string,
    url: string
    secretKey: string
    authCode: string
}

export interface HttpConfigReqDto {
    type: 'object',
    properties: PropertyDto
}

export interface PropertyDto {
    [key: string]: PropertyItemDto
}

export interface PropertyItemDto {
    type: 'string' | 'array' | 'object'
    mapping?: string // type为string显示
    mappingName?: string
    items?: PropertyItemDto // type为array显示
    properties?: PropertyDto // type为object显示
}

export interface CommunicationConfigDto {
    /**
     * 配置客户清单的邮件
     */
    coInsureEmail: string
    /**
     * 配置客户清单 每天发送时间
     */
    coInsureTime: string
    /**
     * 0-不配置,1-配置
     */
    coInsureType: string
    /**
     * 创建时间
     */
    createTime: Date
    /**
     * 创建人id
     */
    createUserId: string
    emailConfig: EmailConfigDTO[]
    httpConfig: HttpConfigDTO[]
    id: number
    /**
     * 是否删除
     */
    isDelete: string
    /**
     * 规则名称
     */
    ruleName: string
    /**
     * 更新时间
     */
    updateTime: Date
    /**
     * 创建人id
     */
    updateUserId: string
}

export interface EmailConfigDTO {
    /**
     * 邮件正文模版
     */
    emailTextTemplate: string
    /**
     * 邮件title模版
     */
    emailTitleTemplate: string
    /**
     * 用分割
     */
    emailTo: string
    /**
     * 附件文件模版
     */
    fileTemplate: string
    /**
     * 必传附件文件,用分割
     */
    mustFilePath: string
}

export interface HttpConfigDTO {
    /**
     * 授权码
     */
    authCode: string
    /**
     * 请求头配置
     */
    header: string
    /**
     * http入参参数
     */
    reqConfig: string
    /**
     * http出参配置
     */
    respConfig: string
    /**
     * 返回 成功的code枚举,只放成功的
     */
    respSuccessCode: string
    /**
     * 秘钥
     */
    secretKey: string
    /**
     * sub和add,分别对应不同的操作
     */
    type: string
    url: string
}